package com.rpa.server.servicerpaserver.util;

import java.util.HashMap;
import java.util.Map;

/**
 * @ClassName NameUtil
 * @Description 工具类，包含一些常用的命名转换方法
 * @Author 86152
 * @Date 2025/2/15 15:58
 * @Version 1.0
 **/
public class NameUtil {

    /**
     * 将下划线命名转换为驼峰命名
     *
     * @param str 下划线命名的字符串
     * @return 驼峰命名的字符串
     */
    public static String underlineToCamel(String str) {
        if (str == null || str.isEmpty()) {
            return str;
        }

        StringBuilder result = new StringBuilder();
        boolean nextUpperCase = false;
        for (char c : str.toCharArray()) {
            if (c == '_') {
                nextUpperCase = true;
            } else {
                if (nextUpperCase) {
                    result.append(Character.toUpperCase(c));
                    nextUpperCase = false;
                } else {
                    result.append(Character.toLowerCase(c));
                }
            }
        }
        return result.toString();
    }

    /**
     * 将Map中的键从下划线命名转换为驼峰命名
     *
     * @param map 下划线命名的Map
     * @return 驼峰命名的Map
     */
    public static Map<String, Object> underlineToCamelCase(Map<String, Object> map) {
        Map<String, Object> camelCaseMap = new HashMap<>();
        map.forEach((key, value) -> camelCaseMap.put(underlineToCamel(key), value));
        return camelCaseMap;
    }
}
